package com.smart.nine.spel.expr.elvis;

import com.smart.nine.spel.expr.User;
import org.springframework.expression.ExpressionParser;
import org.springframework.expression.spel.standard.SpelExpressionParser;
import org.springframework.expression.spel.support.StandardEvaluationContext;

/**
 * Elvis操作符
 *
 * @author junrui.wang
 * @create 2019/5/15
 */
public class ElvisExprSample {
    public static void main(String[] args) {
        User user = new User();
        user.setName("Tom");

        ExpressionParser parser = new SpelExpressionParser();
        StandardEvaluationContext context = new StandardEvaluationContext(user);

        String name = parser.parseExpression("Name?:'不存在的用户名'").getValue(context, String.class);
        //Tom
        System.out.println(name);

        user.setName(null);
        //左边变量为空，则取value值；否则去变量本身的值
        String name2 = parser.parseExpression("Name?:'不存在的用户名'").getValue(context, String.class);
        //不存在的用户名
        System.out.println(name2);


    }

}
